package com.virtualightning.mvvm.base

import androidx.annotation.CallSuper
import androidx.lifecycle.viewModelScope
import com.virtualightning.mvvm.impl.task.TaskManager

/**
 *  Anchor : Create by CimZzz
 *  Time : 2021/01/27 23:33:37
 *  Project : zxs-new
 *  Http View Model 基类
 */
@Suppress("MemberVisibilityCanBePrivate")
abstract class BaseTaskViewModel : BaseViewModel(), ITaskSupport {
    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/2/6 上午10:56
    // 内部维持一个 TaskManager
    ///////////////////////////////////////////////////////////////////////////
    val taskManager : TaskManager by lazy { createTaskManager() }

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/6/6 8:03 PM
    // 创建 TaskManager
    ///////////////////////////////////////////////////////////////////////////
    open fun createTaskManager() : TaskManager {
        return TaskManager(viewModelScope)
    }

    /**
     * 提供任务管理器
     * @return TaskManager 任务管理器
     */
    override fun supportTaskManager(): TaskManager {
        return taskManager
    }

    ///////////////////////////////////////////////////////////////////////////
    // Add by CimZzz on 2021/2/6 上午11:00
    // 清除回调
    ///////////////////////////////////////////////////////////////////////////
    @CallSuper
    override fun onCleared() {
        super.onCleared()
        taskManager.close()
    }
}